Password Safe for Pocket PC - Release Notes
===========================================

Version 1.92b
-------------

This is the first release for the Pocket PC and supports Pocket PC 2000 (ARM,
MIPS and SH3) and 2002 or later (ARM only).  Context help is available in the
usual way - while Password Safe is the foreground application, go to the start
menu and select "Help".

On the whole this release is the same as the desktop version, except for the
bug fixes and differences noted below.  See the FAQ section at the end too.

To compile these sources for the Pocket PC you need:

-  Embedded Visual C++ 3.0 (eVC++ 3.0) for Pocket PC 2000 or 2002 targets.
-  Embedded Visual C++ 4.0 (eVC++ 4.0) for Pocket PC 2003 targets.
-  Pocket PC 2000 SDK (eVC++ 3.0 only)
-  Pocket PC 2002 SDK (eVC++ 3.0 only)
-  Pocket PC 2003 SDK (eVC++ 4.0 only)
-  eVC++ 4.0 Service Pack 2
-  Pocket PC 2003 Emulator Images (eVC++ 4.0 only)
-  Lots and lots of free disk space!

All of these are avalailable as free downloads from Microsoft's MSDN site but
they're not all easy to find.  Obviously if you don't want to target Pocket PC
2003/Windows CE .NET devices you don't need the eVC++ 4.0 components!

Installing
----------

I don't have all possible devices to test on - I have the emulator that comes
with eVC++ and an ARM based Pocket PC 2002.  Other CPUs are untested on real
devices and Pocket PC versions other than 2002 have only been tested under the
emulator.  Therefore if you run this app on a MIPS or SH3 device please report
back whether or not you get a message on launching the application that the
endianness is wrong.

There's no installer yet - this will be added to a later release.  In the
meantime to install simply:

1. Copy pws_ce_help.html to \Windows
2. Create the directory \Program Files\Password Safe
3. Copy the debug or release version of the program appropriate to your devices
   CPU to \Program Files\Password Safe.
4. Create a shortcut to the program in \Windows\Start Menu\Programs
5. If you want Password Safe on your Start menu create a shortcut to it in
   \Windows\StartMenu

Major Bug Fixes
---------------

 1. Assumptions that a TCHAR is really a char have been removed.  There were
    several cases where a TCHAR was assumed to be 1 byte long.  These have been
    fixed so that they multiply sizes by sizeof(TCHAR).

 2. Calls to CMyString::FindByte() replaced by calls to CMyString::Find()
    because FindByte doesn't work reliably when CString wraps a unicode string.

 3. A few very minor fixes to allow clean compilation with Visual Studio .Net
    2003.

 4. Password Safe used to decrypt strings directly into the buffer obtained by
    calling CString::GetBuffer().  Very bad practice.  You can get away with
    it when CString wraps 1-byte character strings.  But all you get is garbage
    when you try it on a system where CString wraps 2-byte character strings.
    So it now decrypts to a temporary buffer then assigns the plaintext string
    to the CString so that proper type conversion takes place.

Major Differences from the Desktop Version:
-------------------------------------------

 1. Popup dialogues (such as the About dialogue) are derived from CPwsPopupDialog
    (which is in turn derived from CDialog) so that some of the idiosyncrasies
    of MFC on the Pocket PC can be undone.  Developer note: where the base class
    has been changed, conditional compilation is used to keep CDialog as the base
    class when targeting desktop versions of Windows.  A typedef called "super"
    (in the manner of java) is declared as a synonym for the actual base class.
    See ConfirmDeleteDlg.h and ConfirmDeleteDlg.cpp for an example.

 2. The user interface has been redone for the Pocket PC's smaller screen size,
    The dialogues are smaller, some of the text is reworded to make it fit, the
    toolbar is gone and in line with Pocket PC development guidelines, accelerators
    are removed.

 3. The list control in the main window is derived from CMyListCtrl (derived
    from CListCtrl) for the popup menu to work.  In a future release I may
    get rid of the annoying double red dots "feature" (I call it a bug myself)
    of MFC tap-and-hold processing in Pocket PC 2002 (note Pocket PC 2000 doesn't
    use the red dots and Pocket PC 2003 fixes the bug).

 4. Wide string (unicode) support added throughout, including overloaded
    replacements for strcpy, strlen and strstr (strCopy, strLength and strFind
    respectively in Util.cpp).

 5. Preliminary support for platforms other than Win32 including fixes for
    portability issues when reading/writing files.

 6. File I/O uses fopen, fclose, fread and fwrite (or the unicode equivalent)
    rather than _open, _close, _read and _write which aren't supported on
    Pocket PC.

 7. Features of desktop versions of Windows that are not implemented in Pocket
    PC are conditionally compiled out.

 8. Usernames and passwords are copied to the clipboard as unicode strings.

 9. A wait cursor has been addded for operations that (potentially) take a long
    time.

10. When the listview is rebuilt it is not updated as each item is added.  Instead
    the list is locked at the begining of the updates and unlocked at the end so
    that this list updates only once all additions are complete.

11. In line with Pocket PC development guidelines the name of the currently open
    password database has been removed from the title bar.

12. Enhancements to CMyString to support c-style (i.e. char*) strings on unicode
    systems.  These are needed so that the current file format isn't broken when
    the underlying operating system is unicode.

13. Encrypting files from the command line has been removed, but MAY be reinstated
    at a later date.

Known Issues
------------

 1. Tap-and-hold on a listview item causes two sets of red dots to appear when
    running Password Safe under Pocket PC 2002.  This is a "feature" of the
    operating system and I've not yet found a reliable way of stopping it.
    The feature is not present when running under Pocket PC 2000 or 2003.

 2. The list appears to be loaded three times when a new password database is
    opened.

 3. Password database files are not associated with the Password Safe application.

Frequently Asked Questions
--------------------------

 1. Are the databases created on the Pocket PC compatible with those created on
    the PC?

    A. Yes, the mainstream database formats are identical.  Databases can be
       created and edited on either the Pocket PC or the desktop versions and
       then used with the other without problems.  Experimental features are
       not supported.

       N.B. Databases created with version 1.9.2-DK are NOT compatible with this
       release.

 2. How do I synchronise databases between the desktop and PDA?

    A. There is no direct support for syncronising databases between the desktop
       and PDA versions of Password Safe, but you can use Active Sync to do it.

       1.  Make sure that Active Sync (on the PC) is set up to syncronise files.
           From the "Tools" menu, choose "Options..." and the "Sync Options" tab
           and make sure that the checkbox next to "Files" is checked.  Select
           the Files option and click on "Settings..." to see the directory that
           Active Sync will store the files.

       2.  If the database you want to use is on the PC copy it to the directory
           shown above.  If the database is on the PDA make sure it is in "My
           Documents" or one its subdirectories on the PDA.

       3.  Connect the Pocket PC to your PC and start Active Sync if it doesn't
           start automatically.  The database will be copied automatically.

       To make the process a little easier, the next time you use Password Safe
       on the PC you could open the database that you stored in the Active Sync
       folder in step 1 above or which was copied there in step 3.  If you do
       this you won't have to keep manually copying files.

       NOTE. If you modify the database on both the PC and PDA without an
       intervening synchronization then Active Sync won't be able to resolve the
       conflict.  In this case you'll need to decide whether to loose one set
       of changes or somehow manually merge them.
